from datetime import datetime
from sqlalchemy import Column, DateTime, Integer, String, Date
from config.database import Base


class RuleMonitor(Base):
    """
    规则监控表
    """

    __tablename__ = 'rule_monitor'

    rule_id = Column(Integer, primary_key=True, autoincrement=True, comment='规则id (6位)')
    schema_name = Column(String(50), nullable=True, default='', comment='模式名')
    table_name = Column(String(50), nullable=True, default='', comment='表名')
    sql_name = Column(String(30), nullable=True, default='', comment='脚本名')
    check_type = Column(String(4), default=0, comment='校验类型 1:主键校验 2:非空校验 3:枚举校验 4:数据量校验 5:趋势阈值校验')
    check_grade = Column(String(4), default=0,  comment='校验级别 1.表级别 2.字段级别')
    cal_rule = Column(String(11), nullable=True, default=None, comment='计算规则')
    field_name = Column(String(50), nullable=True, default=None, comment='字段名 1.主键，则填入主键，如果是多个字段，请用","分割 2.非空校验，单字段 3.枚举校验，单字段 4.空（表级） 5.空为表级，有值为字段级')
    compare_value = Column(String(4), default=0, comment='比较值 1.该字段为空 2.该字段为空 3.枚举值数量(用于比较）4.比较值 5.比较值')
    filter_condition = Column(String(200), default=0, comment='过滤条件 where')
    check_cycle = Column(String(10), nullable=True, default='', comment='校验周期 day: 每天 month: 每月一号')
    status = Column(String(4), nullable=True, default='0', comment='是否启用（0-否、1-是）')
    sql_template = Column(String(500), nullable=True, default='', comment='sql模版')
    execute_sql = Column(String(500), nullable=True, default='', comment='执行sql')
    work_date = Column(Date, nullable=True, default=datetime.now(), comment='作业日期（默认为{yyyymmdd}-1）表示T-1')
    cp_date = Column(Date, nullable=True, default=datetime.now(), comment='对照组日期（默认为{yyyymmdd}-1）表示T-1')
    create_by = Column(String(64), nullable=True, default='', comment='创建者')
    create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
    update_by = Column(String(64), nullable=True, default='', comment='更新者')
    update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
